// 注释部分：直角三角形的实现代码，被注释掉未使用
// 直角三角形指的是由星号组成，形状类似直角三角形的图案
// 定义主类 Main，一个 Java 程序的入口类
//public class Main {
//    // 程序的入口方法，Java 程序从这里开始执行
//    public static void main(String[] args) {
//        // 外层循环控制行数，从第 1 行到第 5 行
//        for (int i = 1; i <= 5; i++) {
//
//            // 内层循环控制每行打印的星号数量，第 i 行打印 i 个星号
//            for (int j = 1; j <= i ; j++) {
//                // 打印星号，不换行
//                System.out.print("*");
//            }
//            // 每行打印完星号后换行
//            System.out.println();
//        }
//    }
//}
// 注释部分：等腰三角形的实现代码，被注释掉未使用
// 等腰三角形指的是由星号组成，形状类似等腰三角形的图案
// 定义主类 Main，一个 Java 程序的入口类
//public class Main{
//    // 程序的入口方法，Java 程序从这里开始执行
//    public static void main(String[] args) {
//        // 定义等腰三角形的总行数为 5
//        int rows = 5;
//        // 外层循环控制行数，从第 1 行到第 rows 行
//        for (int i = 1; i <= rows ; i++) {
//            // 此内层循环用于打印每行前面的空格，实现等腰三角形的形状
//            // 第 i 行需要打印 rows - i 个空格
//            for (int k = 1; k <= rows - i; k++) {
//                // 打印空格，不换行
//                System.out.print(" ");
//            }
//            // 此内层循环用于打印每行的星号，第 i 行需要打印 i * 2 - 1 个星号
//            for (int j = 1; j <= i * 2 - 1 ; j++) {
//                // 打印星号，不换行
//                System.out.print("*");
//            }
//            // 每行打印完星号后换行
//            System.out.println();
//        }
//
//    }
//}
// 注释部分：空心三角形的实现说明，row 表示行数
// 空心三角形指的是由星号组成边框，内部为空的等腰三角形
// 定义主类 Main，一个 Java 程序的入口类
public class Main{
    // 程序的入口方法，Java 程序从这里开始执行
    public static void main(String[] args) {
        // 定义空心三角形的总行数为 5
        int rows = 5;
        // 外层循环控制行数，从第 1 行到第 rows 行
        for (int i = 1; i <= rows ; i++) {
            // 此内层循环用于打印每行前面的空格，实现等腰三角形的形状
            // 第 i 行需要打印 rows - i 个空格
            for (int k = 1; k <= rows - i; k++) {
                // 打印空格，不换行
                System.out.print(" ");
            }
            // 此内层循环用于打印每行的字符，第 i 行需要打印 i * 2 - 1 个字符
            for (int j = 1; j <= i * 2 - 1 ; j++) {
                // 判断当前位置是否需要打印星号，满足以下三个条件之一则打印星号
                // 1. 当前处于最后一行
                // 2. 当前处于该行的第一个位置
                // 3. 当前处于该行的最后一个位置
                if(i == rows || j == 1 || j == i * 2 - 1){
                    // 打印星号，不换行
                    System.out.print("*");
                } else {
                    // 若不满足上述条件，说明处于空心部分，打印空格，不换行
                    System.out.print(" ");
                }
            }
            // 每行打印结束后，进行换行操作，准备打印下一行
            System.out.println();
        }
    }
}